/*
 * CLexAnalyser7.h
 *
 *  Created on: Oct 21, 2011
 *      Author: Wincloud Bear
 */

#ifndef CLEXANALYSER7_H_
#define CLEXANALYSER7_H_

#include<stdlib.h>
#include<string.h>
#include<stdio.h>

class CTokenAnalyser
{
public:
    CTokenAnalyser();
    void start();

private:
    const static int BUFFER_MAX_SIZE = 256 ;

    FILE *_pFile,*_pCWordFile,*_pIDFile,*_pNumFile;    /*打开对应的代码文件，二元式文件，标识符文件，常数文件*/
    int _idCounter = 0;    /*记录标识符个数*/
    int _numCounter = 0;   /*记录数字个数*/
    int _reverseWordCounter = 0;    /*记录保留字个数*/
    char _inputTokenBuffer[BUFFER_MAX_SIZE],ch;   /*token数组用来存放读入的单词符号，ch存放当前读入字符*/
    int _lineNumber=1;      /*记录行号*/
    int _wordNumber = 0;
    int _reverseWordCode;       /*对应保留字的编码*/
    int _isAnalyseComplete = 0;    /*文件读取完毕标志*/

    void passSpace();   /*删除空白行*/
    void concatenation();  /*将当前读入的字符送入word数组中*/
    int isDigit();   /*判断是否为数字*/
    int isLetter();  /*判断是否为字母*/
    void retractPointer();  /*向前扫描指针后退一个字符*/
    int isReserve();  /*判断一个单词是否为保留字*/
    void createIDList(); /*建立一个存放标识符的符号表*/
    void createConstNumLIst();   /*建立一个存放数字的符号表*/
    void errorHandler();  /*处理错误*/
    void getFileToAnalyse();
    int analyse();
    void closeFiles();
    void outputResult();
};


#endif /* CLEXANALYSER7_H_ */
